![Challenge #47: Vehicle Identification Number Test ~車両識別番号のテスト~ – Alteryx Weekly Challenge](https://devio2023-media.developers.io/wp-content/uploads/2018/11/alteryx-weekly-challenge-intermediate-level-advent-calendar-2018.png)
Challenge #47: Vehicle Identification Number Test ~車両識別番号のテスト~ – Alteryx Weekly Challenge
こんにちは。Alteryxサポートエンジニアとして勉強中のスズです。
Alteryx Communityで公開されているWeekly Challengeに挑戦するシリーズ。今回は車両識別番号のテストに挑戦します。
動作環境
当エントリの執筆には、以下の環境を利用しています。
- Windows 10 Pro
- Alteryx Designer 2019.1.4.57073 英語版
Challenge #47: Vehicle Identification Number Test
お題
今回挑戦するお題はこちら。
Input側のデータはこちら。
Output側のデータはこちら。
お題の説明の中に、Wikipediaへのリンクが用意されています。
Wikipedia内の説明を参考にして、「VIN」列から「Check Digit」列と「Calculation」列を作成します。
ワークフローの全体図と追加したデータ
ワークフローの全体図はこちら。
解答の作成にあたり、WikipediaにあるTransliteration key: values for VIN decodingとWeight factor tableの対応表をText Inputツールで作成しました。
Transliteration key: values for VIN decodingはこちら。
Weight factor tableはこちら。
「Check Digit」列の準備
RegExツールを使用して、「VIN」列のデータを1文字ずつに分けていきます。
設定はこちら。
- Field to Parse: 「VIN」列
- Regular Expression: (.)
- Output Method: Tokenize
- Split to Columns
- #of Columns: 17
この時点で出力されたデータはこちら。9番目のデータが「Check Digit」列になるデータです。
Transposeツールを使用して、データを縦持ちに変換します。
FilterツールのBasic filterを使用して、「Name」列が「9」に等しいデータのみ抽出します。
「Caluculation」列の準備
前項のTransposeツールの出力データを使用します。
Text Inputツールで用意したTransliteration key: values for VIN decodingのデータを使用して、Find Replaceツールで「Value」列のアルファベットを数字に変換します。
設定はこちら。
- Any Part of Field
- Find Within Field: 「Field」列
- Find Value: 「Alphabet」列
- Replace Found Text With Value: 「Number」列
Weight factor tableのデータと結合するために、Selectツールを使用して「Name」列をInt32型に変更します。
Joinツールを使用して、Weight factor tableのデータと結合します。Join by Specific Fieldsを指定し、「Name」列と「Position」列で結合をおこなっています。また、あわせて「Value」列をInt32型に変更しています。「Value」列には文字列(NA)が含まれていましたが、これはNullに変換されます。
Formulaツールを使用して「Products」列をInt32型で作成し、「Value」列に「Weight」列をかけた値を出力します。
「Value」列にはNullが存在するため、Nullの場合は0に置き換えて計算しています。
IIF(IsNull([Value]),0,[Value])*[Weight]
Summarizeツールを使用して、「VIN」列でグループ化と「Products」列の合計を出力します。
Formulaツールを使用して「Calculation」列をV_WString型で作成し、
まずは「Sum_Products」列を11で割った余りを出力します。
Mod([Sum_Products], 11)
余りが「10」だった場合は「X」に変更します。
IIF([Calculation] == "10", "X", [Calculation])
2つのデータの結合
JoinツールのJoin by Specific Fieldsを使用して「VIN」列でデータを結合します。あわせて不要な列の削除と列名の修正を行います。
結果を確認して完成です。
最後に
今回はChallenge #47: Vehicle Identification Number Testに挑戦しました。
サンプルワークフローのご案内
クラスメソッドでご契約のユーザー様向けに、当ブログでご紹介したワークフローを専用ポータルにて公開しております。当エントリでご紹介したワークフローも公開予定ですので、ご参考にしていただきますと幸いです。
Alteryxの導入なら、クラスメソッドにおまかせください
日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。